<?php
namespace app\model\admin;

use app\model\BaseModel;

/**
 * 权限组模型
 * 对应数据库表: oa_admin_group (员工权限分组表)
 */
class AdminGroup extends BaseModel
{
    // 设置表名（不包含前缀）
    protected $name = 'admin_group';
    
    // 设置主键
    protected $pk = 'id';
    
    // 设置字段类型
    protected $type = [
        'status' => 'integer',
        'create_time' => 'int',
        'update_time' => 'int'
    ];

    // 可搜索字段
    protected $searchField = [
        'title',
        'status'
    ];

    // 搜索器
    public function searchTitleAttr($query, $value)
    {
        $query->where('title', 'like', '%'.$value.'%');
    }

    public function searchStatusAttr($query, $value)
    {
        $query->where('status', $value);
    }

    /**
     * 获取权限组列表
     * @param array $params 查询参数
     * @param int $page 页码
     * @param int $limit 每页数量
     * @return array
     */
    public function getList(array $params = [], int $page = 1, int $limit = 15)
    {
        $query = $this->newQuery();
        
        // 处理搜索条件
        if (!empty($params['title'])) {
            $query->where('title', 'like', '%' . $params['title'] . '%');
        }
        
        if (isset($params['status']) && $params['status'] !== '') {
            $query->where('status', $params['status']);
        }
        
        // 获取总数
        $total = $query->count();
        
        // 获取分页数据
        $list = $query->page($page, $limit)
            ->order('id', 'desc')
            ->select();
            
        return [
            'list' => $list,
            'total' => $total,
            'page' => $page,
            'limit' => $limit
        ];
    }

    /**
     * 根据ID获取权限组信息
     * @param int $id 权限组ID
     * @return AdminGroup|null
     */
    public function getInfoById(int $id)
    {
        return $this->find($id);
    }

    /**
     * 创建权限组
     * @param array $data 权限组数据
     * @return int|false
     */
    public function createGroup(array $data)
    {
        $data['create_time'] = time();
        $data['update_time'] = time();
        return $this->insertGetId($data);
    }

    /**
     * 更新权限组信息
     * @param int $id 权限组ID
     * @param array $data 权限组数据
     * @return bool
     */
    public function updateGroup(int $id, array $data)
    {
        $data['update_time'] = time();
        return $this->where('id', $id)->update($data);
    }

    /**
     * 删除权限组（软删除）
     * @param int $id 权限组ID
     * @return bool
     */
    public function deleteGroup(int $id)
    {
        return $this->destroy($id);
    }
}